1. КОМПОНЕНТЫ ВЫБОРА ЗНАЧЕНИЯ ИЗ СПИСКА
1.1. КОМПОНЕНТ «JComboBox» (поле со списком)
![]()
Компонент JComboBox служит для выбора какого-либо одного текстового значения из выпадающего списка.
|
№ п/п |
Свойство |
Назначение |
|
1. |
model |
СПИСОК ЗНАЧЕНИЙ СПИСКА (набор текстовых строк, без пустых строк в конце) |
|
2. |
font |
Шрифт текста списка |
|
3. |
foreground |
Цвет текста списка |
|
4. |
background |
Цвет фона списка |
|
5. |
selectedIndex |
Номер выбранной строки (отсчет с 0) |
|
6. |
selectedItem |
Значение выбранного элемента |
|
7. |
editable |
Разрешение редактирования значений |
|
8. |
maximumRowCount |
Количество отображаемых строк в выпадающем списке, после которых включается вертикальная прокрутка списка |
|
9. |
toolTipText |
Всплывающая подсказка |
|
10. |
border |
Дополнительная рамка у компонента |
|
11. |
componentPopupMenu |
Привязка компонента всплывающего меню |
|
12. |
enabled |
Доступность компонента |
|
13. |
focusable |
Разрешение фокуса ввода с клавиатуры |
|
14. |
opaque |
Непрозрачность фона |
|
15. |
X |
Положение верхнего левого угла компонента, координата X |
|
16. |
Y |
Положение верхнего левого угла компонента, координата Y |
|
17. |
Ширина |
Ширина компонента |
|
18. |
Высота |
Высота компонента |
|
№ п/п |
События |
Назначение |
|
1. |
actionPerformed |
Основное событие на изменение выбранного значения в списке |
|
№ п/п |
Методы |
Назначение |
|
1. |
getSelectedItem() |
Получение выбранного значения из списка |
|
2. |
getSelectedIndex() |
Получение номера выбранного значения из списка (отсчет с 0) |
|
3. |
removeAllItems |
Удалить все строки списка |
|
4. |
addItem |
Добавить новую строку в список |
|
5. |
removeItemAt |
Удалить нужную строку из списка |
|
6. |
setSelectedIndex() |
Установка желаемого номера строки для выбора (отсчет с 0) |
|
7. |
setSelectedItem() |
Установка желаемого значения строки для выбора |
|
8. |
getItemCount() |
Количество строк в списке (отсчет с 1) |
1.1.1. Примеры работы с JComboBox
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// Обработка выбора значения из списка JComboBox
try {
// Получение значения выбранной строки
jTextField1.setText(jComboBox1.getSelectedItem().toString());
} catch (Exception e) { // Значение в компоненте не выбрано
jTextField1.setText("");
};
}
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// Обработка выбора значения из списка JComboBox по выбранному номеру строки
int k = jComboBox1.getSelectedIndex(); // Получение номера выбранной строки
if (k==-1) return; // Если ничего не выбрано, то выход из процедуры
jTextField1.setText(jComboBox1.getModel().getElementAt(k).toString());
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// Пример изменения набора строк в компоненте JComboBox
jComboBox1.removeAllItems(); // Очистка всех элементов
jComboBox1.addItem("Delphi"); // Добавление элемента
jComboBox1.addItem("Java"); // Добавление элемента
jComboBox1.addItem("C#"); // Добавление элемента
jComboBox1.addItem("C++"); // Добавление элемента
jComboBox1.removeItemAt(0); // Удаление элемента
jComboBox1.setSelectedIndex(0); // Выбор значения по номеру
// jComboBox1.setSelectedItem("C++"); // Выбор значения по названию
}
1.2. КОМПОНЕНТ «JList» (список)

Компонент JList служит для выбора какого-либо одного или нескольких текстовых значений из списка.
|
№ п/п |
Свойство |
Назначение |
|
1. |
model |
СПИСОК ЗНАЧЕНИЙ СПИСКА (набор текстовых строк, без пустых строк в конце) |
|
2. |
font |
Шрифт текста списка |
|
3. |
foreground |
Цвет текста списка |
|
4. |
background |
Цвет фона списка |
|
5. |
selectedIndex |
Номер выбранной строки (отсчет с 0, -1 – значение не выбрано) |
|
6. |
selectionMode |
Режим выбора значения из списка: SINGLE – выбор одного значения; SINGLE_INTERVAL – выбор произвольного непрерывного интервала значений; MULTIPLE_INTERVAL – выбор произвольного набора значений. |
|
7. |
layoutOrientation |
VERTICAL - все элементы списка отображаются в виде одного столбца
VERTICAL_WRAP - элементы списка отображаются в виде столбцов
HORIZONTAL_WRAP - элементы списка также располагаются в столбцах, но количество элементов по горизонтали фиксировано
|
|
8. |
visibleRowCount |
Количество отображаемых строк (остальные в прокрутке) |
|
9. |
fixedCellHeight |
Высота строк (-1 – аторазмер) |
|
10. |
fixedCellWidth |
Ширина столбцов строк для много столбцового режима (-1 – аторазмер) |
|
11. |
toolTipText |
Всплывающая подсказка |
|
12. |
border |
Дополнительная рамка у компонента |
|
13. |
componentPopupMenu |
Привязка компонента всплывающего меню |
|
14. |
enabled |
Доступность компонента |
|
15. |
focusable |
Разрешение фокуса ввода с клавиатуры |
|
16. |
opaque |
Непрозрачность фона |
ПРИМЕЧАНИЕ. При добавлении на форму компонента JList предварительно автоматически вставляется компонент JScrollPane, и уже в него вставляется JList. Это дает компоненту JList возможность горизонтальной и вертикальной прокрутки. Свойства «X», «Y», «Ширина», «Высота» перенесены в компонент JScrollPane.
|
№ п/п |
События |
Назначение |
|
1. |
valueChanged |
Основное событие на изменение выбранного значения в списке |
|
№ п/п |
Методы |
Назначение |
|
1. |
getSelectedIndex() |
Получение номера выбранной строки (отсчет с 0, -1 – значение не выбрано) |
|
2. |
getSelectedValue() |
Получение выбранного значения из списка |
|
3. |
setSelectedIndex() |
Установка номера строки выбора (для режима одиночного выбора, отсчет с 0) |
|
4. |
getSelectedIndices() |
Возвращает номера выбранных строк (для режима мульти-выбора, отсчет с 0) |
|
5. |
getSelectedValuesList() |
Возвращает список значений всех выделенных элементов списка (с JDK ver. 1.7) |
|
6. |
setSelectedIndices() |
Установка номеров строк для выбора (для режима мульти-выбора, отсчет с 0) |
|
7. |
setSelectedValue() |
Установка выбора нужной строки по ее значению |
|
8. |
setSelectionInterval |
Установка выбора через указание интервала номеров строк |
|
9. |
setListData |
Установка новых значений списка |
1.2.1. Примеры работы с JList
private void jList1_valueChanged(javax.swing.event.ListSelectionEvent evt) {
// Получение значения выбранной строки в JList
try {
jTextField1.setText(jList1.getSelectedValue().toString());
} catch (Exception e) { jTextField1.setText(""); };
}
private void jList1_valueChanged(javax.swing.event.ListSelectionEvent evt) {
// Получение значения выбранной строки в JList по номеру выделенной строки
int k = jList1.getSelectedIndex(); // Получение номера выделенной стоки
if (k==-1) return; // Если не выбрана строка то выход их процедуры
// Получение выделенной строки
jTextField1.setText(jList1.getModel().getElementAt(k).toString());
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// Получение номеров выбранных строк из JList
int[] k = jList1.getSelectedIndices(); // Получаем номера выбранных строк
String s = Arrays.toString(k); // Преобразуем цифры номеров сток в строку типа «[0, 2, 5]»
jTextField1.setText(s); // Выводим номера выбранных строк
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// Получение значений выбранных строк из JList
// Получаем строку типа «[Java, Delphi, Джава]»
jTextField1.setText(jList1.getSelectedValuesList().toString());
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// Установка нужной строки в JList
jList1.setSelectedIndex(2); // Выбираем 3 стоку (отсчет с 0)
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// Установка выбранных строк в JList
jList1.setSelectedIndices(new int[] {1,3,4}); // Выбираем строки 2, 4 и 5 (отсчет с 0)
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// Установка строки по значению в JList
// Второй параметр означает необходимость автопрокрутки до выбранной строки
jList1.setSelectedValue( "Java", true);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// Установка выбора строк через указание интервала номеров строк в JList
jList1.getSelectionModel().setSelectionInterval(0, 3); // Выделить первые 4 строки
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// Установка новых данных (строк) в JList
// jList1.setListData(new String[]{""}); // Очистка данных
// Очистка данных с установкой новых значений
jList1.setListData(new String[]{"Pavlodar", "Astana", "Moskov"});
jList1.setSelectedValue("Moskov", true); // Выбор значения по названию
}
1.3. КОМПОНЕНТ «JRadioButton»
(кнопка-переключатель)
и «ButtonGroup» (группа кнопок)
![]()
Если нужно организовать выбор только одного из нескольких вариантов, используется компонент JRadioButton. Несколько радио-кнопок объединяют в группу с помощью не визуального компонента ButtonGroup (в рамках которого осуществляется выбор). После щелчка мыши на одной из радио-кнопок группы будет выбрана только она.

|
№ п/п |
Свойство |
Назначение |
|
1. |
buttonGroup |
Ссылка на компонент группы ButtonGroup |
|
2. |
actionCommand |
Название команды. Данное название придумывается самостоятельно, например это может быть номер пункта: «1» и т.п. Наличие команды обязательно для работы кнопки |
|
3. |
text |
Текстовое значение пункта |
|
4. |
selected |
Выбор пункта (да/нет) |
|
5. |
font |
Шрифт текста списка |
|
6. |
foreground |
Цвет текста списка |
|
7. |
background |
Цвет фона списка |
|
8. |
icon |
Картинка
вместо «точки» |
|
9. |
iconTextGap |
Расстояние от картинки «icon» до надписи кнопки |
|
10. |
selectedIcon |
Картинка вместо «точки» для выбранного состояния |
|
11. |
rolloverIcon |
Картинка вместо «точки» при наведении на нее мышки для невыбранного состояния |
|
12. |
rolloverSelectedIcon |
Картинка вместо «точки» при наведении на нее мышки для выбранного состояния |
|
13. |
horizontalAlignment |
Выравнивание текста и картинки кнопки относительно ее размеров по горизонтали |
|
14. |
horizontalTextPosition |
Положение картинки и надписи кнопки относительно друг друга по горизонтали |
|
15. |
verticalAlignment |
Выравнивание текста и картинки кнопки относительно ее размеров по вертикали |
|
16. |
verticalTextPosition |
Положение картинки и надписи кнопки относительно друг друга по вертикали |
|
17. |
border |
Дополнительная рамка у компонента |
|
18. |
componentPopupMenu |
Привязка компонента всплывающего меню |
|
19. |
enabled |
Доступность компонента |
|
20. |
focusable |
Разрешение фокуса ввода с клавиатуры |
|
21. |
opaque |
Непрозрачность фона |
|
22. |
X |
Положение верхнего левого угла компонента, координата X |
|
23. |
Y |
Положение верхнего левого угла компонента, координата Y |
|
24. |
Ширина |
Ширина компонента |
|
25. |
Высота |
Высота компонента |
|
№ п/п |
События |
Назначение |
|
1. |
actionPerformed |
Основное событие на выбор пункта |
Для работы с радио-кнопками необходимо сделать следующее:
1. сделать обработчик события для какой-либо радио-кнопки группы, например первой: «jRadioButton1_actionPerformed»;
2. указать всем остальным радио-кнопкам, что событие «actionPerformed» должно обрабатываться уже созданным методом «jRadioButton1_actionPerformed». Для этого нужно всем кнопкам, через инспектор объектов, в поле события «actionPerformed» вручную вписать строку «jRadioButton1_actionPerformed».
Таким образом получится, что для всех радио-кнопок будет вызываться один и тот же метод «jRadioButton1_actionPerformed», в котором и будет производится обработка выбора одного из значений.
Узнать данные о том, какая именно кнопка нажалась в группе радио-кнопок, можно через метод «getSelection().getActionCommand()» компонента ButtonGroup.
1.3. 1. Примеры работы с JRadioButton
private void jRadioButton1_actionPerformed(java.awt.event.ActionEvent evt) {
// Выбор значения из группы JRadioButton по имени «акции» (этот метод нужен один для всех радио-кнопок группы)
// Получаем название команды (номера кнопки)
String s = buttonGroup1.getSelection().getActionCommand();
switch (s) {
case "1": jTextField1.setText("Oracle"); break;
case "2": jTextField1.setText("Microsoft"); break;
case "apple": jTextField1.setText("Apple"); break;
default: jTextField1.setText("???");
}
}
private void jRadioButton1_actionPerformed(java.awt.event.ActionEvent evt) {
// Выбор значения из группы JRadioButton по ссылке на выбранную кнопку (этот метод нужен один для всех радио-кнопок группы)
// Получаем ссылку на выбранную радио-кнопку
JRadioButton button = (JRadioButton)evt.getSource();
jTextField1.setText(button.getText()); // Получаем название выбранной кнопки-переключателя
jTextField2.setText(button.getActionCommand()); // Получаем название команды кнопки
}
2. КОМПОНЕНТЫ ВЫБОРА ЗНАЧЕНИЯ
2.1. КОМПОНЕНТ «JCheckBox» (флажок)
![]()
Если нужно организовать выбор только одного варианта из одного, то используется компонент JCheckBox. После щелчка мыши на компоненте он будет помечен как выбранный, при повторном щелчке выделение снимется.
Если необходимо сделать несколько разных независимых выборов, то нужно использовать несколько разных компонент JCheckBox: для каждого выбора по одному компоненту. Пример из трех компонент:

|
№ п/п |
Свойство |
Назначение |
|
1. |
actionCommand |
Название команды. Данное название придумывается самостоятельно, например это может быть номер пункта: «1» и т.п. Наличие команды обязательно для работы кнопки |
|
2. |
text |
Текстовое значение пункта |
|
3. |
selected |
Выбор пункта (да/нет) |
|
4. |
font |
Шрифт текста списка |
|
5. |
foreground |
Цвет текста списка |
|
6. |
background |
Цвет фона списка |
|
7. |
icon |
Картинка
вместо «галочки» |
|
8. |
iconTextGap |
Расстояние от картинки «icon» до надписи кнопки |
|
9. |
selectedIcon |
Картинка вместо «галочки» для выбранного состояния |
|
10. |
rolloverIcon |
Картинка вместо «галочки» при наведении на нее мышки для невыбранного состояния |
|
11. |
rolloverSelectedIcon |
Картинка вместо «галочки» при наведении на нее мышки для выбранного состояния |
|
12. |
horizontalAlignment |
Выравнивание текста и картинки кнопки относительно ее размеров по горизонтали |
|
13. |
horizontalTextPosition |
Положение картинки и надписи кнопки относительно друг друга по горизонтали |
|
14. |
verticalAlignment |
Выравнивание текста и картинки кнопки относительно ее размеров по вертикали |
|
15. |
verticalTextPosition |
Положение картинки и надписи кнопки относительно друг друга по вертикали |
|
16. |
border |
Дополнительная рамка у компонента |
|
17. |
componentPopupMenu |
Привязка компонента всплывающего меню |
|
18. |
enabled |
Доступность компонента |
|
19. |
focusable |
Разрешение фокуса ввода с клавиатуры |
|
20. |
opaque |
Непрозрачность фона |
|
21. |
X |
Положение верхнего левого угла компонента, координата X |
|
22. |
Y |
Положение верхнего левого угла компонента, координата Y |
|
23. |
Ширина |
Ширина компонента |
|
24. |
Высота |
Высота компонента |
|
№ п/п |
События |
Назначение |
|
1. |
actionPerformed |
Основное событие на выбор пункта |
Для работы с кнопкой-флажком необходимо сделать следующее:
1. сделать обработчик события для какой-либо кнопки-флажка, например первой: «jCheckBox1ActionPerformed»;
2. указать всем остальным кнопкам-флажкам, что событие «actionPerformed» должно обрабатываться уже созданным методом «jCheckBox1ActionPerformed». Для этого нужно всем кнопкам-флажкам, через инспектор объектов, в поле события «actionPerformed» вручную вписать строку «jCheckBox1ActionPerformed».
Таким образом получится, что для всех кнопок-флажков будет вызываться один и тот же метод «jCheckBox1ActionPerformed», в котором и будет производиться обработка выбора значений.
2.1.1. Примеры работы с JCheckBox
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// Работа с несколькими JCheckBox (этот метод нужен один для всех флажков "группы")
JCheckBox button = (JCheckBox)evt.getSource(); // Получаем ссылку на нажатую кнопку-флажок
if (button.isSelected()) { // Если флажок выбран
String s = button.getActionCommand(); // Получаем имя "команды" кнопки
switch (s) {
case "1": jTextField1.setText("Oracle"); break;
case "2": jTextField1.setText("Microsoft"); break;
case "3": jTextField1.setText("Apple"); break;
default: jTextField1.setText("???");
}
} else jTextField1.setText(""); // Если флажок не выбран
}
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// Работа с одиночным флажком JCheckBox
if (jCheckBox1.isSelected()) { // Если флажок выбран, то включить видимость панели
jPanel1.setVisible(true) } else { jPanel1.setVisible(false); }
}
2.2. КОМПОНЕНТ JTree (дерево)

Компонент JTree служит для отображения древовидной структуры данных и выбора нужного значения.
|
№ п/п |
Свойство |
Назначение |
|
1. |
model |
МОДЕЛЬ ДЕРЕВА |
|
2. |
rootVisible |
Запрет показа корневого узла и подузлов (остаются видимыми только дочерние к корневому узлу узлы) |
|
3. |
editable |
Разрешение редактирования значений дерева |
|
4. |
showsRootHandles |
Показать значек «-» у корневого узла |
|
5. |
font |
Шрифт надписей вкладки |
|
6. |
foreground |
Цвет фона компонента |
|
7. |
border |
Вид рамки у панели |
|
8. |
toolTipText |
Всплывающая подсказка |
|
№ п/п |
События |
Назначение |
|
1. |
valueChanged |
Выбор нужного узла/значения в дереве |
|
№ п/п |
Методы |
Назначение |
|
1. |
getSelectionPath |
Получение выбранной ветви (значения) (строка типа «[JTree, food, pizza]») |
ПРИМЕЧАНИЕ. При добавлении на форму компонента JTree предварительно автоматически вставляется компонент JScrollPane, и уже в него вставляется JTree. Это дает компоненту JTree возможность горизонтальной и вертикальной прокрутки. Свойства «X», «Y», «Ширина», «Высота» находятся в компоненте JScrollPane.
2.2.1. Редактор Модели JTree (свойство model)

2.2.2. Примеры работы с JTree
private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) {
// Получение выбранной ветви (значения) в JTree
// Выдаст строку типа «[JTree, food, pizza]»
JOptionPane.showMessageDialog(rootPane,
jTree1.getSelectionPath(),"Выбрано",JOptionPane.INFORMATION_MESSAGE);
}